文件路径后面加"\"应该用什么单位byte or word?

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:46:15
xor eax,eax
mov al,'\'
.if byte ptr [esi-1] != al ;esi是路径指针
mov word ptr [esi],ax

意思是当路径后面没有“\”的时候加个“\”
检测的时候用的是 byte字节, 为什么加“\”的时候用的却是word字做单位呢?

我把最后一行改成
mov byte ptr [esi],al

发现程序可以正常查找 但是查找的结果跟修改前有出入

一个严肃的问题摆在我们
用什么单位在path路径后面加\
为什么要选择word字类型
我分析的是老罗的 windows环境下32位汇编语言程序设计\Chapter10\FindFile

你可以调试一下,
xor eax,eax //eax清0
mov al,'\' //eax的第一个字节为'\',第二个字节是0
mov word ptr [esi],ax //将路径尾部添加'\',以及一个0(字符串结尾)。

这里使用了word而不是byte,是因为除了添加'\'以外,还要设置字符串的结束符0。

如果写成mov byte ptr [esi],al,则结果随机。由于没有结束符,则会一直向下查找0,产生乱码,也有可能会内存越界。
或者可以这样写,效果和用WORD的应该一致。
mov byte ptr [esi],al
mov byte ptr [esi+1],0

'\'这个应该是转义字符吧,我记得Java里面要表达文件夹路径后面的\要使用'\\'才行的